#include <stdio.h>
#include <time.h>

// 在Windows和Linux上实现跨平台的sleep函数，单位为秒
#if defined(_WIN32) || defined(_WIN64)
#include <windows.h>
#define sleep_seconds(seconds) Sleep((seconds)*1000)
#else
#include <unistd.h>
#define sleep_seconds(seconds) sleep(seconds)
#endif

/**
 * 说明： 获取当前时间，格式为YYYY-MM-DD HH:MM:SS
 * 用法:
 * 	   char time_buffer[20];
 * 	   time_current(time_buffer, sizeof(time_buffer);
 * 	   printf("%s\n", time_buffer);
 */
void time_current(char *buffer /*in*/, size_t buffer_size) {
	// 获取当前时间
	time_t raw_time;
	time(&raw_time);
	// 将时间转换为本地时间
	struct tm *tinfo = localtime(&raw_time);
	// 将时间格式化为字符串
	strftime(buffer, buffer_size, "%Y-%m-%d %H:%M:%S", tinfo);
}

// gcc -std=c11 main.c -o time_current_test.exe
int time_current_test() {
	char time_buffer[20];
	while (1) {
		time_current(time_buffer, sizeof(time_buffer));
		printf("%s\n", time_buffer);
		sleep_seconds(1);
	}
	return 0;
}

int main() {
	time_current_test();
	return 0;
}
